package stage_1_module_3.code.homework_2;

import java.util.Scanner;

/**
 *  编程获取两个指定字符串中的最大相同子串。 
 * 如： s1="asdafghjka", s2="aaasdfg" 他们的最大子串为"asd"  
 * 提示： 将短的那个串进行长度依次递减的子串与较长的串比较。
 * 思路 :
 * 1.计算s1长度l1, s2长度l2，并取较小的字符串[假定为s2]
 * 2.从l2长度开始依次递减，获取l2,l2-1..., 1字符长度的子串c2
 * 3.判断s1是否包含c2，如果包含则打印并退出循环
 */
public class Answer {
    public static void main(String[] args) {
        String s1,s2;
        Scanner sc = new Scanner(System.in);
        System.out.println("输入第一个字符串");
        s1 = sc.next();
        System.out.println("输入第二个字符串");
        s2 = sc.next();
        sc.close();
        String maxchild = (s1.length() >= s2.length()) ? getMaxChild(s1, s2): getMaxChild(s2, s1);
        System.out.println("最大子串:"+maxchild);
    }

    /**
     * 获取两个字符串的最大子串
     * @param lstr 长字符串
     * @param sstr 短字符串
     * @return
     */
    public static String getMaxChild(String lstr, String sstr) {
        for(int i=sstr.length(); i>0; i--) {
            for (int j=0; j<=sstr.length()-i; j++) {
                String s = sstr.substring(j, i);
                if (lstr.contains(s)) {
                    return s;
                }
            }
        }
        return "";
    }
}
